package com.hongji.lms5xxcommunicator.grid.region;

import lombok.Getter;
import lombok.Value;

/**
 * <p>
 * XY 平面上的闭区间矩形（含边界）。<br/>
 * 通常用于配置文件中指定检测区域，例如 S1/S2/S3。
 * </p>
 *
 * <p><b>职责</b></p>
 * <ul>
 *   <li>存储矩形边界坐标（xMin/xMax/yMin/yMax）。</li>
 *   <li>提供点 (x,y) 是否命中的判定。</li>
 * </ul>
 *
 * <p><b>用法</b></p>
 * <ol>
 *   <li>构造时传入两个对角点坐标，内部会自动取 min/max。</li>
 *   <li>通过 Lombok 自动生成的 getter 获取矩形边界。</li>
 * </ol>
 *
 */
@Value
public class RegionRect {
    /** X 最小值 */
    double xMin;
    /** X 最大值 */
    double xMax;
    /** Y 最小值 */
    double yMin;
    /** Y 最大值 */
    double yMax;

    /**
     * <p>构造方法：根据两个对角点坐标生成闭区间矩形。</p>
     *
     * @param x1 第一个点的 X
     * @param x2 第二个点的 X
     * @param y1 第一个点的 Y
     * @param y2 第二个点的 Y
     */
    public RegionRect(double x1, double x2, double y1, double y2) {
        this.xMin = Math.min(x1, x2);
        this.xMax = Math.max(x1, x2);
        this.yMin = Math.min(y1, y2);
        this.yMax = Math.max(y1, y2);
    }
}
